Development projects typically follow a process that is composed of a sequence of task phases. For example, software projects may begin with a requirements analysis phase, proceed to a design phase, proceed to a coding or implementation phase, proceed to a unit testing phase, proceed to an integration or system testing phase, proceed to a warranty phase, and finish in a maintenance phase. In different organizations, different phases may be identified and some phases may be added or omitted from the exemplary phases of the project lifecycle described above. The progress through the project phases need not be entirely sequential, and additional requirements analysis may be performed, for example, during later project phases or some coding may be performed, for example, during the design phase.
Evolving products may be released in a series of product release cycles. Some release cycles may be categorized as major release cycles and others may be categorized as minor release cycles. When software products evolve, multiple new or modified functions or behaviors may be delivered in a single release cycle. Some kinds of modifications may be required to be released in a major release cycle because of the magnitude of change they introduce or because they do not provide backwards compatibility.
Project planning is a challenging discipline that may involve planning the coordinated work of many people developing a new product. Many parameters interact in generating accurate estimates and plans. It is a common task in organizations to be asked to replan one or more projects based on a changed planning parameter, for example based on an earlier completion date, based on additional requirements, based on using outsourced personnel, based on sharing technology with another organization. Software tools can facilitate the task of planning and replanning projects.